HTTP协议中的chunked编码解析 |
您所在的位置:网站首页 › txt 解析长度 › HTTP协议中的chunked编码解析 |
“ HTTP协议中的chunked传输编码全接触。” 在HTTP协议中,服务器发往客户端的数据中,通常都包括HTTP头和HTTP体,当存在HTTP体的时候,HTTP体的长度通常是由HTTP头内的“Content-Length”字段确定。 就像下图: 不过,“Content-Length”字段并非总是存在,这就涉及到今天要讲的chunked编码,它在HTTP协议标准的早期并不存在,而是在HTTP 1.1 才开始被引入到协议中。 chunked编码允许服务器发出的数据被分成多个部分,这样,服务器就可以在发送数据前无需知道待发送内容的总大小。因为它不需要填充“Content-Length”字段。 当HTTP使用chunked编码进行传输的时候,在HTTP头部会出现字段“Transfer-Encoding: chunked”。同时,“Content-Length”字段相应地就不会出现了。 如图: 当HTTP头部标示了HTTP体的数据为chunked编码时,整个HTTP体将是chunked编码。 chunked编码的一般格式如下: len1\r\ndata1\r\nlen2\r\ndata2\r\n........0\r\n\r\n 即数据采用分块的模式进行传输,编码后的每块数据包含一个长度值和对应长度的传输内容,长度值为16进制数据的字符串形式,如上图的b50表示该块数据的传输内容长度为0xb50字节。长度值之后为固定值"\r\n",传输内容之后也是固定值"\r\n"。chunked编码的最后一块为“0\r\n\r\n”,即数据块的长度为0。 在解析chunked编码时,按每块的长度将传输的内容进行拼接,直至块长为0的块即完成一个chunked编码的解析。如上图的图片,就仅一个0x158字节的数据块,它的第二块chunked就已经是“0\r\n\r\n”了。 chunked编码很简单,是不是? 不过,在协议还原的实现过程中,如何高效高性能地对chunked进行解码,是一件值得挑战的事哦。毕竟,HTTP的流量占比不小的。 长按进行关注。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |